The present invention relates generally to computer systems with multiple graphics processors and in particular to the efficient rendering of frames using the multiple graphics processors.
The present invention relates to the field of computer graphics. Many computer graphic images are created by mathematically modeling the interaction of light with a three dimensional scene from a given viewpoint. This process, called rendering, generates a two-dimensional image of the scene from the given viewpoint, and is analogous to taking a photograph of a real-world scene.
As the demand for computer graphics, and in particular for real-time computer graphics, has increased, computer systems with graphics processors adapted to accelerate the rendering process have become widespread. In these computer systems, the rendering process is divided between a computer's general purpose central processing unit (CPU) and a graphics processing units (GPU). Typically, the CPU performs high level operations, such as determining the position, motion, and collision of objects in a given scene. From these high level operations, the CPU generates a set of rendering commands and data defining the desired rendered image or images. For example, rendering commands and data can define scene geometry, lighting, shading, texturing, motion, and/or camera parameters for a scene. The graphics processor creates one or more rendered images from the set of rendering commands and data.
To maximize rendering performance, the computer system may include two or more graphics processing units (GPUs) operating in parallel. The graphics processing units can distribute the rendering workload in a number of different ways. For example, different portions of an image can be rendered in parallel by different GPUs. The portions are then combined to produce a complete rendered image. In another example parallel rendering scheme, each GPU renders one image in a sequence of images.
Typically, if a computer system includes two or more GPUs, the GPUs running on a computer system are required have equivalent performance. One reason is that the usual methods for distributing the rendering workload work best when the GPUs are equivalent. However, for cost and availability reasons, a user may desire to implement two GPUs that are non-equivalent or heterogeneous in terms of performance. For instance, a user may want to use both an integrated GPU already present on a motherboard and a discrete GPU present on a separate board.
Therefore it is desirable to provide systems, methods, and apparatus for efficient distribution of the rendering workload when using heterogeneous GPUs.